__author__ = 'nvsmirnov'
# -*- coding: utf-8 -*-
import time
from selenium import webdriver
from Framework.PageClasses._CpBase import _CpBase
from Framework.DataClasses.CEditProvider import *
from Framework.DataClasses.CommonData import CommonData
from selenium.webdriver.common.keys import Keys
import selenium.common.exceptions as e

class CpEditProviderProfile(_CpBase):

    def openProfile(self):
        url = CommonData.url + "common/user/profile/useronly/1"
        self.driver.get(url)
        #self.assert_url(url)

    #Обновить данные о полномочиях пользователя
    def enterProfile(self):
        self.presence_of_element_located_byXpath(".//*[@type='button' and contains(.,'Обновить данные о полномочиях пользователя')]")
        self.driver.find_element_by_xpath(".//*[@type='button' and contains(.,'Обновить данные о полномочиях пользователя')]").click()

    #Заполняем форму обязательными данными. Данные берутся из класса CEditProvider
    def fillForm(self):
        field = self.driver.find_element_by_id('inn')
        field.clear()
        field.send_keys(inn)

        field = self.driver.find_element_by_id('user_fio[lastname]')
        field.clear()
        field.send_keys(lastname.decode('utf-8'))
        #Не понятно откуда появляется окно "Выбрать организацию", закроем его
        self.presence_of_element_located_byXpath("//*[contains(@class, 'x-tool x-tool-close')]")
        self.driver.find_element_by_xpath("//*[contains(@class, 'x-tool x-tool-close')]").click()

        field = self.driver.find_element_by_id('user_fio[firstname]')
        field.clear()
        field.send_keys(firstname.decode('utf-8'))

        field = self.driver.find_element_by_id('user_fio[middlename]')
        field.clear()
        field.send_keys(middlename.decode('utf-8'))

        field = self.driver.find_element_by_id('user_job')
        field.clear()
        field.send_keys(user_job.decode('utf-8'))

        field = self.driver.find_element_by_id('user_email')
        field.clear()
        field.send_keys(user_email)

        phone_number
        field = self.driver.find_element_by_id('user_phone[cntrcode]')
        field.clear()
        field.send_keys(phone_number.cntrcode)
        #Появится окно, про существующий e-mail, закроем его
        self.presence_of_element_located_byXpath("//*[contains(@class, 'x-tool x-tool-close')]")
        self.driver.find_element_by_xpath("//*[contains(@class, 'x-tool x-tool-close')]").click()

        field = self.driver.find_element_by_id('user_phone[citycode]')
        field.clear()
        field.send_keys(phone_number.citycode)
        field = self.driver.find_element_by_id('user_phone[number]')
        field.clear()
        field.send_keys(phone_number.number)

        field = self.driver.find_element_by_id('mobile_phone')
        field.clear()
        field.send_keys(mobile_phone)

        field = self.driver.find_element_by_id('secret_phraze')
        field.clear
        field.send_keys(secret_phraze)

        checkbox = self.driver.find_element_by_id('nodatevalid')
        if checkbox.is_selected():
            return
        else: checkbox.click()

    #Заполним "Регистрационные документы"
    def fillDocuments(self):
        field = self.driver.find_element_by_xpath(".//*[@type='text' and @name='valid_descr[]']")
        field.clear()
        field.send_keys(documentdescription)

        #Загрузка картинки
        upload = self.driver.find_element_by_css_selector("input[name='valid[]']")
        upload.send_keys(CommonData.pathToFile)

    def submit(self):
        self.presence_of_element_located_byXpath(".//*[@type='button' and contains(.,'Подписать и направить')]")
        self.driver.find_element_by_xpath(".//*[@type='button' and contains(.,'Подписать и направить')]").click()

        #Выбрать подпись
        self.sign_cryptopro()

        """
        #JS Alert
        self.wait_for_alert()
        self.driver.switch_to.alert.accept()
        #Выбор сертификата
        self.submit_certificate_window()
        #JS Alert
        self.wait_for_alert()
        self.driver.switch_to.alert.accept()
        """

        #Опять форма подтверждения
        self.presence_of_element_located_byXpath(".//*[@type='button' and contains(.,'Вернуться к редактированию')]")
        self.driver.find_element_by_xpath(".//*[@type='button' and contains(.,'Подписать и направить')]").click()

        """
        #Выбор сертификата опять!
        self.submit_certificate_window()
        #JS Alert
        self.wait_for_alert()
        self.driver.switch_to.alert.accept()
        """
        self.presence_of_element_located_byXpath(".//*[text()='Данные изменены успешно.']")
        self.driver.find_element_by_xpath(".//*[@type='button' and contains(.,'OK')]").click()

